<?php 
class Mesa extends AppModel {
    var $name = 'Mesa';
 
    var $validate = array(
        'codigo' => array(
            'regla1' => array( 
                // solo numeros enteros positivos - i: case insensitive
                'rule'    => array('naturalNumber', false),
                'allowEmpty' => false,
                'message' => 'El número de mesa no es un valor válido.'
            ),
            'regla2' => array( 
                // custom rule para controlar duplicados
                'rule' => array('existeOtro'),
                'message' => 'El número de mesa usado ya existe.'
            )
        ),
        'pos_x' => array(
            'ocupado' => array(
                'rule' => array('estaOcupado'),
                'message' => 'La ubicación elegida está ocupada.'
            ),
            'positivo' => array(
                'rule' => array('naturalNumber', false),
                'message' => 'La ubicación elegida debe ser mayor a cero.'
            )
            
        ),
        'pos_y' => array(
            'ocupado' => array(
                'rule' => array('estaOcupado'),
                'message' => 'La ubicación elegida está ocupada.'
            ),
            'positivo' => array(
                'rule' => array('naturalNumber', false),
                'message' => 'La ubicación elegida debe ser mayor a cero.'
            )
            
        )
    );
       
    public function existeOtro() {
        // busca que no haya otro id con el mismo campo codigo
        $filtro_dup = array('Mesa.id !=' => $this->id,             
                            'Mesa.codigo' => $this->data['Mesa']['codigo']);
        $cantExistentes = $this->find('count', array(
            'conditions' => $filtro_dup,
            'recursive' => -1
        ));
        return $cantExistentes == 0;
    }    
    public function estaOcupado() {
        // busca que no haya otro id con el mismo campo codigo
        $filtro_dup = array('Mesa.id !=' => $this->id,             
                            'Mesa.pos_x' => $this->data['Mesa']['pos_x'],
                            'Mesa.pos_y' => $this->data['Mesa']['pos_y']);
        $cantExistentes = $this->find('count', array(
            'conditions' => $filtro_dup,
            'recursive' => -1
        ));
        return $cantExistentes == 0;
    }    

    
}
?>